package com.sweetcircle.utils;

import com.sweetcircle.domain.po.UserContact;
import com.sweetcircle.domain.vo.UserInfoVO;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * 中文转拼音工具类
 */
public class PinyinUtils {
    /**
     * 获取汉字串拼音，英文字符不变
     */
    public static String getFullSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        if (arr[0] > 128) {
                try {
                    String s = PinyinHelper.toHanyuPinyinStringArray(arr[0], defaultFormat)[0];
                    pybf.append(s);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[0]);
            }



//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] > 128) {
//                try {
//                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
//                } catch (BadHanyuPinyinOutputFormatCombination e) {
//                    e.printStackTrace();
//                }
//            } else {
//                pybf.append(arr[i]);
//            }
//        }
        return pybf.toString();
    }

    /**
     * 将集合数据按照汉字首字母分组排序
     *
     * @param list 要排序的集合
     */
    public static HashMap<String, List<UserContact>> sortFirstLetterUserInfo(List<UserContact> list) {
        HashMap<String, List<UserContact>> res = new HashMap<>();
        try {
            for (UserContact userContact : list) {
                Method declaredMethod = userContact.getClass().getDeclaredMethod("getNickName");  // 获取名为 getNickName的方法
                Method declaredMethod2 = userContact.getClass().getDeclaredMethod("getNoteName");  // 获取名为 getNickName的方法
                String name = (String) declaredMethod2.invoke(userContact);  // 执行该方法  获取 userContact 对象的NickName 的值
                if(AnanUtils.isEmpty(name)){
                    name = (String) declaredMethod.invoke(userContact);
                }
                String fullSpell = getFullSpell(name);  // 获取 中文字符的拼音音节 英文字符不变
                String key = fullSpell.substring(0, 1);  // 获取改昵称的英文首字母
                List<UserContact> userContacts = res.get(key);  // 获取该首字母对应的集合
                if (userContacts == null) {  // 如果为空
                    userContacts = new ArrayList<>();  // 创建集合
                    userContacts.add(userContact);  // 添加
                } else {
                    userContacts.add(userContact);  // 添加
                }
                res.put(key, userContacts);  // 添加
            }
            return res;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


    public static void main(String[] args) {
        HashMap<String, List<Integer>> result = new HashMap<>();
        ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        result.put("A", integers);
        System.out.println(result);
        List<Integer> a = result.get("A");
        a.add(2);
        a.add(3);
        System.out.println(result);

    }
}
